|
Программируем по-русски
|
Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку. Издатель Глагола
|
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*) ОТДЕЛ ИзФайла+; (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*) (* НАЗНАЧЕНИЕ: пример упорядочивания чисел из внешнего файла быстрым обменом *) (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*) ИСПОЛЬЗУЕТ ОбменомБ, Параметр ИЗ "...\Отделы\Обмен\", Читать ИЗ "...\Отделы\Обмен\", Писать ИЗ "...\Отделы\Обмен\", Вывод ИЗ "...\Отделы\Обмен\"; (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Ошибка1(ц-:ЦЕПЬ); УКАЗ Вывод.Цепь(ц); Вывод.Цепь("^Вызов:^ИзФайла.exe имяВходногоФайла имяВыходногоФайла"); СТОП(1) КОН Ошибка1; (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Ошибка2(ц1-,ц2-:ЦЕПЬ); УКАЗ Вывод.Цепь(ц1); Ошибка1(ц2) КОН Ошибка2; (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Упорядочивание; ПЕР ряд:ДОСТУП К РЯД ИЗ ЦЕЛ; (* обрабатываемый ряд *) потокЧтения:Читать.Поток; (* поток для входного неупорядоченного ряда чисел *) потокЗаписи:Писать.Поток; (* поток для выходного упорядоченного ряда чисел *) чисел:ЦЕЛ; (* чисел во входном файле *) имяФайла:ЦЕПЬ[100]; число:ЦЕЛ; УКАЗ (* проверка параметров приложения *) ЕСЛИ Параметр.всего <= 1 ТО Ошибка1("Нет имени входного файла.") КОН; ЕСЛИ Параметр.всего <= 2 ТО Ошибка1("Нет имени выходного файла.") КОН; (* подсчёт чисел во входном файле *) Параметр.Текст(1,имяФайла); потокЧтения:=Читать.Открыть(имяФайла); ЕСЛИ потокЧтения = ПУСТО ТО Ошибка2(имяФайла," не найден.") КОН; потокЧтения.видЗнаков:=Читать.знУни; чисел:=0; ПОКА НЕ Читать.Конец(потокЧтения) ВЫП число:=Читать.Цел(потокЧтения); УВЕЛИЧИТЬ(чисел) КОН; Читать.Закрыть(потокЧтения); (* распределение памяти под ряд чисел *) СОЗДАТЬ(ряд,чисел); (* чтение ряда *) Параметр.Текст(1,имяФайла); потокЧтения:=Читать.Открыть(имяФайла); потокЧтения.видЗнаков:=Читать.знУни; ОТ число:=0 ДО чисел-1 ВЫП ряд[число]:=Читать.Цел(потокЧтения) КОН; Читать.Закрыть(потокЧтения); (* упорядочивание ряда быстрым обменом *) ОбменомБ.Упорядочить(ряд^); (* запись ряда *) Параметр.Текст(2,имяФайла); потокЗаписи:=Писать.Открыть(имяФайла); ЕСЛИ потокЗаписи = ПУСТО ТО Ошибка2(имяФайла," не открывается.") КОН; потокЗаписи.видЗнаков:=Писать.знУни; ОТ число:=0 ДО чисел-1 ВЫП Писать.ЧЦел(потокЗаписи,"%d^",ряд[число],0,0,0) КОН; Писать.Закрыть(потокЗаписи) КОН Упорядочивание; (*────────────────────────────────────────────────────────────────────────────*) УКАЗ Упорядочивание КОН ИзФайла. ▲ Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com или Издателю Глагола:
|
|